home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
ASTRNOMY
/
GRVKIT02.ZIP
/
GRAVKIT.DOC
< prev
next >
Wrap
Text File
|
1994-01-07
|
11KB
|
262 lines
GravKit v0.2 11-Dic-93
Manuale d'uso
* * *
GravKit e' un insieme di programmi per la simulazione gravitazionale di un
sistema di n-corpi. Si compone di tre procedure:
Cluster Esegue il calcolo vero e proprio a partire da un file contenente
la descrizione del sistema di n-corpi attraverso le sue condizioni
iniziali. Consente oltre alla visualizzazione grafica anche il
salvataggio dei movimenti calcolati in file di vario formato.
Movie Consente di leggere i file delle animazioni calcolate da cluster
e rappresentarle a video a varie velocita'.
Genr Procedura ancora in fase di sviluppo. Attualmente costruisce un
insieme di n-corpi con condizioni iniziali generate in modo
pseudo-casuale con possibilita' di regolare alcuni limiti.
********************************************************************************
Premessa.
---------
Il nucleo del programma cluster e' stato ricavato da un articolo di Alfredo
Di Stefano apparso sui numeri 4/93 e 5/93 della "Commodore Gazette". Dal
relativo listato in liguaggio C per Amiga, ho estratto le funzioni 'Simulate'
e 'ClusterLeggi'. La prima esegue il calcolo basandosi sulla legge di
gravitazione universale. Il calcolo viene eseguito senza alcuna ottimizzazione,
tenendo conto ad ogni iterazione per ogni oggetto di tutti gli altri n-1
oggetti. Questo comporta una relativa lentezza quando gli oggetti iniziano ad
essere dell'ordine delle centinaia, anche se si dispone di un 486DX.
Finalita' del programma.
------------------------
Ho scritto queste procedure con tre scopi principali:
1) simulare l'interazione mareale di due galassie durante
una collisione o un passaggio ravvicinato
2) confrontare i risultati ottenuti, con quelli di una analoga procedura,
di un altro astrofilo, veloce ed ottimizzata ma ancora in fase di sviluppo
3) integrare i due lavori in un unico programma (NGC) dotato di molte funzioni
di un'interfaccia a menu semplice da usare e della possibilita' per
l'utente di inserire, utilizzare e confrontare propri algoritmi di calcolo
Ho quindi deciso di inserire la possibilita' di salvare le posizioni calcolate
su un file per poterle poi rileggere velocemente, interrompere l'animazione nei
momenti particolarmente significativi, tornare indietro, variare la velocita' di
visualizzazione e confrontare i risultati con la procedura "furba" di cui sopra.
Informazioni tecniche sul formato delle animazioni.
---------------------------------------------------
Attualmente le animazioni possono essere salvate in quattro formati distinti
usando le seguenti opzioni del programa cluster:
Opzione Descrizione Estensione
-n uscita solo numerica generica .DAT
-h uscita numerica ridotta (HGC e 3270) 720x348 .HGC
-c uscita numerica ridotta (CGA) 320x200 .CGA
-v uscita numerica ridotta (VGA e ATT) 640x480 .VGA
Nella prima vengono salvate le posizioni dell'oggetto in doppia precisione
quindi 8 byte per coordinata. Questo consente di visualizzare l'animazione
su qualunque scheda grafica, ma soprattutto permette un confronto, oggetto
per oggetto, sull'approssimazione dei conti, rispetto ad altri algoritmi.
Purtroppo il file risulta di dimensioni generose ed in genere incomprimibile.
Con le restanti opzioni vengono salvati solo gli incrementi di posizione non
in unita' di misura fisiche ma in pixel. Questo consente di memorizzare una
coordinata in un solo byte. Si ottengono cosi' file ridotti ad 1/8 delle
dimensioni originali ed in genere comprimibili con un rapporto variante da
1:1.5 a 1:5. Purtroppo questi file sono dipendenti dalla risoluzione grafica
impostata.
Fluidita' delle animazioni.
---------------------------
Per ottenere un'animazione fluida occorre che il file sia gia' pre-caricato
interamente nella cache del disco ad esempio lanciando almeno una volta
l'animazione.
Occorre quindi caricare nel config.sys un programma di cache, come ad esempio
il diffusissimo SmartDrive. Se avete installato MS-Windows 3.1, probabilmente
questo e' gia' presente. Per verificare la quantita' di memoria allocata come
cache, potete dare il comando:
smartdrv /S <invio>
Eventuali discontinuita' nell'animazione possono dipendere da vari problemi
e hanno varie soluzioni:
Problema Soluzione
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Memoria cache inferiore alla - Aumentare la memoria allocata
dimensione del file dallo SmartDrive
- Usare un compressore del disco come
Stacker e allocare la cache solo
sulla partizione compressa (in cache
viene tenuto il file compresso)
- Non si ha memoria estesa da - Le interruzioni dipendono in gran
usare come cache del disco parte da un file frammentato. Usare
un deframmentatore del disco come il
Compress (PcTools) o SpeedDisk (Norton)
Cluster.
--------
Il programma cluster puo' essere chiamato con i seguenti paramatri:
cluster <option> <res> filename <iterazioni>
[option] = -g uscita solo grafica (default)
= -G uscita solo grafica senza tracce orbite
= -t uscita solo grafica con tracce orbite limitate
= -n uscita solo numerica generica
= -h uscita numerica ridotta (HGC) 720x384
= -c uscita numerica ridotta (CGA) 320x200
= -v uscita numerica ridotta (VGA) 640x480
= -gn uscita grafica e numerica
[res] = /0 autodetect della scheda grafica (default)
= /1 CGA 320x200 4 colori
= /2 HGC 720x384 2 colori Hercules
= /3 ATT 640x400 2 colori Olivetti
= /4 VGA 640x480 16 colori
[iterazioni] = numero di posizioni da calcolare (solo con -n|-h|-c|-v)
L'unico parametro non opzionale e' il nome del file che deve essere completo
dell'estensione. Ad esempio:
cluster sunearth.clu
equivale a:
cluster -g /0 sunearth.clu
Il formato dei file .CLU e' facilmente intuibile dagli esempi:
INIZIO_DATI: SunEarth.clu
DELTA 0.00027
PROXIMITY 0.001
MAGNIFICATION 0.001
#BODY 2
COORDINATES_XYZ VELOCITY_XYZ MASS COLOR
0 0 0 0.00 0.00 0.00 2.00 4
1 0 0 0.00 8.88 0.00 1e-6 1
FINE_DATI
La prima e l'ultima riga vengono ingnorate, i parametri Delta, Prossimita' e
Scala, sono preceduti da una parola di commento, cosi' come il numero dei corpi
che determina quante linee saranno interpretate nella sottostante tabella delle
condizioni iniziali.
Le unita' di misura sono in U.A. per le distanze, in U.A. all'anno per le
velocita' ed in multipli della massa solare per la massa.
Potra' sembrare strano cercare di descrivere oggetti come le galassie con
queste unita' di misura. Tuttavia guardando i valori nel file g12_nu2.clu si
potra' notare che non sono molto elevati. Infatti basta che vi sia la giusta
proporzione tra masse e distanze ed il gioco e' fatto. Tuttavia nella prossima
versione aggiungero' la possibilita' di inserire nel .CLU anche il valore della
costante di gravitazione universale in modo da scegliere a piacere il sistema
delle unita' di misura e poter cosi' inserire valori piu' realistici nelle
condizioni iniziali.
I colori sono codificati secondo la sequente tabella e hanno signficato solo
in modo VGA e CGA:
VGA COLOR | # | CGA COLOR
---------------------------------
BLUE | 1 | LIGHTGREEN
GREEN | 2 | LIGHTRED
CYAN | 3 | YELLOW
RED | 4 | LIGHTGREEN
MAGENTA | 5 | LIGHTRED
BROWN | 6 | YELLOW
LIGHTGRAY | 7 | LIGHTGREEN
DARKGRAY | 8 | LIGHTRED
LIGHTBLUE | 9 | YELLOW
LIGHTGREEN | 10 | LIGHTGREEN
LIGHTCYAN | 11 | LIGHTRED
LIGHTRED | 12 | YELLOW
LIGHTMAGENTA | 13 | LIGHTGREEN
YELLOW | 14 | LIGHTRED
WHITE | 15 | YELLOW
Movie.
------
Il programma movie puo' essere chiamato con i seguenti paramatri:
movie [opt] [res] filename.<ext> [delay]
[opt] = -t tracciamento orbite attivo
[res] = /0 autodetect della scheda grafica (default)
= /1 CGA 320x200 4 colori
= /2 HGC 720x348 2 colori Hercules
= /3 3270 720x350 2 colori PC3270
= /4 ATT 640x400 2 colori Olivetti
= /5 VGA 640x480 16 colori
[delay] = ritardo di fotogramma in ms (default->0)
<ext> = dat -> file generico (double) e grafica di default
= cga -> file compresso per grafica CGA
= hgc -> file compresso per grafica HGC e PC3270
= vga -> file compresso per grafica VGA e ATT
L'estensione del nome del file e' determinante per settare l'opportuno modo
grafico. Se tuttavia l'autodetect fallisse si puo' forzare una qualsiasi scheda.
Ad esempio su un Olivetti M24 per visualizzare un file .VGA bisognera' dare:
movie /4 nomefile.vga
se si vogliono delle traccie lunghe 30 posizioni e un ritardo di 0.3 secondi
a fotogramma:
movie -t30 /4 nomefile.vga 300
Lanciato il programma si puo spostare l'immagine usando i cursori. Quindi far
partire l'animazione premendo la barra. Questa puo' quindi servire come
tasto PAUSE. A fine animazione si puo' ritornare indietro col tasto "<" mentre
se si preme il tasto "l" all'inizio si ha un ciclo infinito.
In qualsiasi istante si puo' uscire dal programma con il tasto ESC.
********************************************************************************
Nessun compenso e' richiesto per questo programma che puo' essere distribuito
gratuitamente bla bla...
Ho inserito questo programma nel pubblico dominio per valutare l'interesse
presso la comunita' degli astrofili; se siete quindi interessati e volete che
venga distribuita anche la prossima versione mandatemi una cartolina postale
o una email su internet.
Alessandro Freda
Via Maona 3/10
16155 Genova-Pegli
email: freda@dist.dist.unige.it
Se vi saranno molte persone interessate faro' l'upload della prossima
versione su bbs e internet.
Sono graditi suggermenti, consigli, bibliografia, notizie su bug e simili.
In ogni caso tenete conto che questa e' pre-pre release.
********************************************************************************